package com.arron.algorithm.leetcodetop100.链表;

import com.arron.algorithm.leetcodetop100.ListNode;

public class 旋转链表 {



    public ListNode rotateRight(ListNode head, int k) {
        if (head == null|| head.next == null){
            return head;
        }
        //1, 将链表的尾节点找到
        ListNode p1 =head;
        int len = 1;
        while (p1.next != null){
            p1 = p1.next;
            len++;
        }
        //将尾节点指向头节点
        p1.next = head;

        // 找到旋转 k 个节点后，第 i个节点作为尾节点
        int i =len- k%len;
        //如果k%len ==0 ，则直接返回
        if (i == len) {
            return head;
        }

        p1 = head;
        while (--i>=1){
            p1= p1.next;

        }
        ListNode  res = p1.next;
        // 断开，并返回下一个节点作为头节点
        p1.next = null;
        return res;
    }

}
